package com.telit.firecommand.service;

import com.telit.common.dto.DistrictDTO;
import com.telit.common.entity.PageData;

import java.util.List;


/**
 * 行政区划
 *
 * @author yuezhuang
 * @date 2022-09-05
 */
public interface DistrictService {

    /**
     * 获取所有子行政区树
     *
     * @param districtCode 父类code
     *
     * @return DistrictDTO
     */
    List<DistrictDTO> qryAllByParentCode(String districtCode);

    /**
     * 依据上级行政区划编码查询下级行政区划列表
     *
     * @param districtCode 上级行政区划编码
     * @param rank         行政区划层级, 1-省 2-市 3-区县 4-乡镇 5-村
     *
     * @return DistrictDTO
     */
    List<DistrictDTO> qryListByParentCode(String districtCode, Integer rank);

    /**
     * 依据上级行政区划编码查询下级行政区划列表（分页）
     *
     * @param districtCode       上级行政区划编码
     * @param rank               行政区划层级, 1-省 2-市 3-区县 4-乡镇 5-村
     * @param defaultCurrentRank 是否默认为当前级别，否则默认查询子集
     *
     * @return DistrictDTO
     */
    PageData<List<DistrictDTO>> qryListByParentCodeWithPage(String districtCode, Integer rank,
                                                            boolean defaultCurrentRank, Integer current, Integer size,
                                                            boolean noPage);

    /**
     * 依据行政区划编码查询所属行政区划信息
     *
     * @param districtCode 行政区划编码
     *
     * @return DistrictDTO
     */
    DistrictDTO qryDistrictInfo(String districtCode);

    /**
     * 查询树形列表
     *
     * @param districtCode 行政区划编码
     *
     * @return DistrictDTO
     */
    DistrictDTO treeDistrict(String districtCode);

}
